import pandas as pd
df = pd.read_csv('covid_19_data.csv',parse_dates=['Last Update'],index_col=0)
#parsing according to the last update datetime column
#serial number as index
df.rename(columns={'ObservationDate':'Date', 'Country/Region':'Country'}, inplace=True)
#renaming certain columns
#used for Map later
df_confirmed = pd.read_csv("time_series_covid_19_confirmed.csv")
df_confirmed.rename(columns={'Country/Region':'Country'}, inplace=True)
df_confirmed = df_confirmed[["Province/State","Lat","Long","Country"]]
df_temp = df.copy()
df_temp['Country'].replace({'Mainland China': 'China'}, inplace=True)
df_latlong = pd.merge(df_temp, df_confirmed, on=["Country", "Province/State"])
confirmed = df.groupby('Date').sum()['Confirmed'].reset_index()
deaths = df.groupby('Date').sum()['Deaths'].reset_index()
recovered = df.groupby('Date').sum()['Recovered'].reset_index()
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Bar(x=confirmed['Date'],
y=confirmed['Confirmed'],
name='Confirmed',
marker_color='blue'
))
fig.add_trace(go.Bar(x=deaths['Date'],
y=deaths['Deaths'],
name='Deaths',
marker_color='Red'
))
fig.add_trace(go.Bar(x=recovered['Date'],
y=recovered['Recovered'],
name='Recovered',
marker_color='Green'
))
fig.update_layout(title='Worldwide Corona Virus Cases - Confirmed, Deaths, Recovered (Bar Chart)',
xaxis_tickfont_size=14,
yaxis=dict(
title='Number of Cases',
titlefont_size=16,
tickfont_size=14,
),
legend=dict(
x=0,
y=1.0,
bgcolor='rgba(255, 255, 255, 0)',
bordercolor='rgba(255, 255, 255, 0)'
),
barmode='group',
bargap=0.15, # gap between bars of adjacent location coordinates.
bargroupgap=0.1 # gap between bars of the same location coordinate.
)
fig.show()
#steep rise in confirmed cases around 12th March 2020. Reason could be more tests and results
#available
df_grouped = df.groupby('Country')['Confirmed', 'Deaths', 'Recovered'].sum().reset_index()
n = 5
c_lrgst = df_grouped.Confirmed.nlargest(n)
d_lrgst = df_grouped.Deaths.nlargest(n)
r_lrgst = df.Recovered.nlargest(n)
top_5 = df_grouped.query('Confirmed in @c_lrgst')
fig = go.Figure()
fig.add_trace(go.Scatter(x=top_5['Country'],
y=top_5['Confirmed'],
mode='lines+markers',
name='Confirmed',
line=dict(color='blue', width=2)
))
fig.add_trace(go.Scatter(x=top_5['Country'],
y=top_5['Deaths'],
mode='lines+markers',
name='Deaths',
line=dict(color='Red', width=2)
))
fig.add_trace(go.Scatter(x=top_5['Country'],
y=top_5['Recovered'],
mode='lines+markers',
name='Recovered',
line=dict(color='Green', width=2)
))
fig.update_layout(
title='Top 5 Countries with Corona Virus Cases (Line Chart)',
xaxis_tickfont_size=14,
yaxis=dict(
title='Number of Cases',
titlefont_size=16,
tickfont_size=14,
),
legend=dict(
x=0,
y=1.0,
bgcolor='rgba(255, 255, 255, 0)',
bordercolor='rgba(255, 255, 255, 0)'
)
)
fig.show()
#China cases far more than the other top 5 countries
import plotly.graph_objects as go
import numpy as np
China = df.query('Country=="Mainland China"').groupby("Last Update")[['Confirmed', 'Deaths', 'Recovered']].sum().reset_index()
z = np.random.poisson(size=(len(China['Confirmed']), len(China['Last Update'])))
fig = go.Figure(data=go.Heatmap(
z=z,
x=China['Last Update'],
y=China['Confirmed'],
colorscale='fall'))
fig.update_layout(
title='China - Number of Cases per day',
xaxis_nticks=5)
fig.show()
#Cases are still increasing . No notion of decrease till now.
import plotly.express as px
fig = px.density_mapbox(df_latlong,
lat="Lat",
lon="Long",
hover_name="Province/State",
hover_data=["Confirmed","Deaths","Recovered"],
animation_frame="Date",
color_continuous_scale="Portland",
radius=7,
zoom=1,height=700)
fig.update_layout(title='Worldwide Corona Virus Cases Time Lapse - Confirmed, Deaths, Recovered',
font=dict(family="Courier New, monospace",
size=14,
color="#7f7f7f")
)
fig.update_layout(mapbox_style="open-street-map", mapbox_center_lon=0)
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0}) #tight layout - right , top, left , below
fig.show()
#trend of spread and at what rate. Huge jump in March